package v1

import (
	"fmt"
	"ginblog/errmsg"
	"ginblog/model"
	"github.com/gin-gonic/gin"
	"net/http"
	"strconv"
)

/*
	添加分类
	删除分类
	修改分类
	查询全部分类
	查询单个分类下的文章
*/
// GetUserById 查看单个分类
func GetCategoryby(c *gin.Context) {
	var data model.CateGory
	id, _ := strconv.Atoi(c.Param("id"))
	code := model.ViewByCategory(id, &data)
	if code == errmsg.SUCCESS {
		c.JSON(http.StatusOK, gin.H{
			"status": code,
			"data":   data,
			"msg":    errmsg.GetErrMsg(code),
		})
	}
	if code == errmsg.ERROR_CATE_NOT_EXIST {
		c.JSON(http.StatusOK, gin.H{
			"status": code,
			"msg":    errmsg.GetErrMsg(code),
		})
	}
}

// GetCategory 查看分类
func GetCategory(c *gin.Context) {
	pageSize, _ := strconv.Atoi(c.Query("pageszie")) //每页个数
	pageNum, _ := strconv.Atoi(c.Query("pagenum"))   //当前页码
	if pageSize == 0 {
		pageSize = -1 //传值-1，就相当于没有这个功能
	}
	if pageNum == 0 {
		pageNum = -1
	}
	data, total := model.GetCategory(pageSize, pageNum)
	code := errmsg.SUCCESS
	c.JSON(http.StatusOK, gin.H{
		"status":  code,
		"data":    data,
		"total":   total,
		"message": errmsg.GetErrMsg(code),
	})
}

// AddCategory 添加分类
func AddCategory(c *gin.Context) {
	var data model.CateGory
	err := c.ShouldBind(&data)
	if err != nil {
		fmt.Println("绑定参数失败", err)
		c.JSON(http.StatusBadRequest, gin.H{
			"status": "failed",
			"msg":    err.Error(),
		})
		return
	}

	code := model.CheckCategory(data.Name)
	if code == errmsg.ERROR_CATE_NOT_EXIST {
		model.CreateCategory(&data)
	}
	if code == errmsg.ERROR_CATENAME_USED {
		code = errmsg.ERROR_CATENAME_USED
	}
	c.JSON(http.StatusOK, gin.H{
		"status": code,
		"data":   data,
		"msg":    errmsg.GetErrMsg(code),
	})
}

// UpdateCategory 修改分类(在更新时也需要注意name不能重名)
func UpdateCategory(c *gin.Context) {
	id, _ := strconv.Atoi(c.Param("id"))
	var data model.CateGory
	c.ShouldBindJSON(&data)
	code := model.CheckUser(data.Name)
	if code == errmsg.SUCCESS {
		model.UpdateCategory(id, &data)
	}
	if code == errmsg.ERROR_CATE_NOT_EXIST {
		c.Abort()
	}
	c.JSON(http.StatusOK, gin.H{
		"status": code,
		"msg":    errmsg.GetErrMsg(code),
	})
}

// DelCategory  删除分类
func DelCategory(c *gin.Context) {
	id, _ := strconv.Atoi(c.Param("id"))
	code := model.DelCategory(id)
	if code == errmsg.SUCCESS {
		c.JSON(http.StatusOK, gin.H{
			"status": code,
			"msg":    errmsg.GetErrMsg(code),
		})
	}
	if code == errmsg.ERROR_CATE_NOT_EXIST {
		c.JSON(http.StatusOK, gin.H{
			"status": code,
			"msg":    errmsg.GetErrMsg(code),
		})
	}
}

//todo 分类下的文章
